#pragma once
#include "EventHandler.h"

namespace Network
{
	class LFThreadPool;
	class EventHandler;

	class Reactor
	{
		public:
			virtual void register_handler(EventHandler *eh, EventType et) = 0;
			virtual void remove_handler(EventHandler *eh, EventType et) = 0;
			virtual void suspend_handle(HANDLE h, EventType et) = 0;
			virtual void resume_handle(HANDLE h, EventType et) = 0;
	
			virtual void handle_events(timeval *timeout = 0) = 0;
		protected:
			Reactor(void){ 
				// empty
			}
			virtual ~Reactor(void){ 
				// empty 
			}
	};
}